package com.zhiwei.msf.common.service;

/**
 * function 缓存服务
 * author zhiwei.yang
 * time 2020-2-29-9:18
 */
public interface CacheService {

    /**
     * 缓存存储
     *
     * @param cacheGroupName 缓存组名(对应项目名)
     * @param key            缓存key
     * @param value          缓存值
     * @return 存储结果
     */
    void putCacheObject(String cacheGroupName, Object key, Object value);

    /**
     * 缓存存储
     *
     * @param cacheGroupName 缓存组名(对应项目名)
     * @param key            缓存key
     * @param value          缓存值
     * @param expireTime     过期时间（单位：秒）
     * @return 存储结果
     */
    void putCacheObject(String cacheGroupName, Object key, Object value, Long expireTime);

    /**
     * 获取缓存对象
     *
     * @param cacheGroupName 缓存组名
     * @param key            缓存对象key
     * @return
     */
    Object getCacheObject(String cacheGroupName, Object key);

    /**
     * 判断缓存对象是否存在
     *
     * @param cacheGroupName 缓存组名称
     * @param key            缓存key
     * @return
     */
    boolean isExistCacheKey(String cacheGroupName, Object key);

    /**
     * 清除缓存组
     *
     * @param cacheGroupName 缓存组名
     * @return
     */
    void removeCacheGroup(String cacheGroupName);

    /**
     * 清除缓存对象
     *
     * @param cacheGroupName
     * @param key
     * @return
     */
    void removeCacheObject(String cacheGroupName, Object key);

    /**
     * 获取缓存键
     *
     * @param cacheGroupName 缓存名
     * @param key            键
     * @return
     */
    String getCacheKey(String cacheGroupName, Object key);
}